package com.common.library.entity;

import org.json.JSONException;
import org.json.JSONObject;

import com.common.library.util.Helper;
import com.zs4sdk.entity.BaseJSONEntity;

/**
 * 服务器返回JSON类基类
 * <p>其它服务器返回JSON类大都继续此类</p>
 * @author chengfu.bao
 *
 */
public class JSONResultEntity extends BaseJSONEntity {
	// #region 常量
	/**
	 * 栏位key:返回结果值
	 */
	public static final String COLUMN_RESULT = "result";
	/**
	 * 栏位key:返回结果描述
	 */
	public static final String COLUMN_DESC = "desc";
	// #endregion 常量
	
	// #region 成员变量
	/**
	 * 返回结果
	 */
	private int result;
	/**
	 * 返回结果描述
	 */
	private String desc;
	// #endregion 成员变量
	
	// #region Getter & Setter集
	/**
	 * @return 返回结果
	 */
	public int getResult() {
		return result;
	}

	/**
	 * 设置返回结果
	 * @param result 返回结果
	 */
	public void setResult(int result) {
		this.result = result;
	}

	/**
	 * @return 返回结果描述
	 */
	public String getDesc() {
		return desc;
	}

	/**
	 * 设置返回结果描述
	 * @param desc 返回结果描述
	 */
	public void setDesc(String desc) {
		this.desc = desc;
	}
	// #endregion Getter & Setter集
	
	// #region 构造方法
	/**
	 * 构造方法
	 */
	public JSONResultEntity(){
		
	}
	/**
	 * 构造方法
	 * @param result
	 * @param desc
	 */
	public JSONResultEntity(int result, String desc){
		this.result = result;
		this.desc = desc;
	}
	/**
	 * 构造方法(由JSON还原成实例)
	 * @param json JSON实例
	 */
	public JSONResultEntity(JSONObject json){
		this.fromJSON(json);
	}
	/**
	 * 构造方法
	 * @param jsonStr
	 */
	public JSONResultEntity(String jsonStr){
		try{
			this.fromJSON(new JSONObject(jsonStr));
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	// #endregion 构造方法
	
	// #region Override集
	@Override
	public JSONObject toJSON() {
		JSONObject result = new JSONObject();
		try {
			result.put(COLUMN_RESULT, this.result)
				  .put(COLUMN_DESC, this.desc)
				  ;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return result;
	}

	@Override
	public void fromJSON(JSONObject json) {
		if (Helper.isNotEmpty(json)) {
			this.result = json.optInt(COLUMN_RESULT);
			this.desc = json.optString(COLUMN_DESC);
		}
	}
	// #endregion Override集
	
	// #region public方法集
	/**
	 * 是否成功
	 * @return
	 */
	public boolean isSuccess(){
		return this.getResult() == 1;
	}
	// #endregion public方法集
}
